/*
  spr-sdk: Statistical Pattern Recognition SDK
  Copyright (C) 2010 Marco Ambu

  This program is free software: you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation, either version 3 of the License, or
  (at your option) any later version.

  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#ifndef _PR_UNIQUEPATTERN_H
#define	_PR_UNIQUEPATTERN_H

#include "pr/Pattern.h"

namespace pr {

  class UniquePattern
  {
  public:
//    UniquePattern()
//      : id(0)
//    {}
    UniquePattern(std::size_t patternId, const Pattern& patternValue, std::size_t classId)
      : Id(patternId)
      , ClassId(classId)
      , Value(patternValue)
    {}
    UniquePattern(const UniquePattern& other)
      : Id(other.Id)
      , ClassId(other.ClassId)
      , Value(other.Value)
    {}
    UniquePattern& operator=(const UniquePattern& other)
    {
      const_cast<std::size_t&>(Id) = other.Id;
      const_cast<std::size_t&>(ClassId) = other.ClassId;
      Value = other.Value;
      return *this;
    }

  public:
    const std::size_t Id;
    const std::size_t ClassId;
    Pattern Value;
  };

} // namespace pr

#endif	// _PR_UNIQUEPATTERN_H
